CREATE DATABASE DW_SiGAT
GO

USE DW_SiGAT
GO

-- -----------------------------------------------------
-- Table DimVeiculo
-- -----------------------------------------------------
CREATE  TABLE DimVeiculo (
  idVeiculo INT NOT NULL IDENTITY PRIMARY KEY,
  CodVeiculo INT NOT NULL ,
  marca CHAR(20) NULL ,
  modelo CHAR(30) NULL ,
  anoFabricacao INT NULL ,
  tipo CHAR(20) NULL);


-- -----------------------------------------------------
-- Table DimPessoa
-- -----------------------------------------------------
CREATE  TABLE DimPessoa (
  idPessoa INT NOT NULL IDENTITY PRIMARY KEY,
  CodPessoa INT NOT NULL ,
  nome CHAR(200) NOT NULL ,
  dataNascimento DATETIME NOT NULL ,
  isPM INT NULL
);


-- -----------------------------------------------------
-- Table DimEnderecoOcorrencia
-- -----------------------------------------------------
CREATE  TABLE DimEnderecoOcorrencia (
  idEndereco INT NOT NULL IDENTITY PRIMARY KEY,
  CodEndereco INT NOT NULL ,
  logradouro VARCHAR(45) NOT NULL ,
  bairro VARCHAR(45) NOT NULL ,
  cep VARCHAR(9) NULL
);


-- -----------------------------------------------------
-- Table DimTempo
-- -----------------------------------------------------
CREATE  TABLE DimTempo (
  idTempo INT NOT NULL IDENTITY PRIMARY KEY,
  data DATETIME NULL ,
  dia INT NULL ,
  nomeDia VARCHAR(25) NULL,
  mes INT NULL ,
  nomeMes VARCHAR(25) NULL,
  ano INT NULL ,
  hora INT NULL
);

-- -----------------------------------------------------
-- Table condicaoTempo
-- -----------------------------------------------------
CREATE  TABLE DimCondicaoTempo (
  idCondicaoTempo INT NOT NULL IDENTITY PRIMARY KEY,
  descricao VARCHAR(45) NOT NULL
);


-- -----------------------------------------------------
-- Table condicaoVia
-- -----------------------------------------------------
CREATE  TABLE DimCondicaoVia (
  idCondicaoVia INT NOT NULL IDENTITY PRIMARY KEY,
  descricao VARCHAR(45) NOT NULL
);


-- -----------------------------------------------------
-- Table sinalizacaoVia
-- -----------------------------------------------------
CREATE  TABLE DimSinalizacaoVia (
  idSinalizacaoVia INT NOT NULL IDENTITY PRIMARY KEY,
  descricao VARCHAR(45) NOT NULL
);


-- -----------------------------------------------------
-- Table FatoOcorrencia
-- -----------------------------------------------------

CREATE  TABLE FatoOcorrencia (
  idOcorrencia INT NOT NULL IDENTITY PRIMARY KEY,
  CodOcorrencia INT NOT NULL ,
  gravidade VARCHAR(45) NULL ,
  possuiVitimas INT NULL ,
  quantidadeVitimas INT NULL ,
  idEndereco INT NULL ,
  tipoOcorrencia VARCHAR(45) NOT NULL ,
  Quantidade INT NULL DEFAULT 1 ,
  QuantidadeVeiculos INT NULL ,
  idTempo INT NOT NULL ,
  idCondicaoTempo INT NOT NULL ,
  idCondicaoVia INT NOT NULL ,
  idSinalizacaoVia INT NOT NULL ,
  CONSTRAINT FK_Endereco
    FOREIGN KEY (idEndereco )
    REFERENCES DimEnderecoOcorrencia(idEndereco ),
  CONSTRAINT fk_FatoOcorrencia_DimTempo1
    FOREIGN KEY (idTempo )
    REFERENCES DimTempo(idTempo ),
  CONSTRAINT fk_FatoOcorrencia_DimCondicaoTempo1
    FOREIGN KEY (idCondicaoTempo )
    REFERENCES DimCondicaoTempo (idCondicaoTempo ),
  CONSTRAINT fk_FatoOcorrencia_DimCondicaoVia1
    FOREIGN KEY (idCondicaoVia )
    REFERENCES DimCondicaoVia (idCondicaoVia ),
  CONSTRAINT fk_FatoOcorrencia_DimSinalizacaoVia1
    FOREIGN KEY (idSinalizacaoVia )
    REFERENCES DimSinalizacaoVia (idSinalizacaoVia )
);


-- -----------------------------------------------------
-- Table DimEnvolvido
-- -----------------------------------------------------
CREATE  TABLE DimEnvolvido (
  idOcorrencia INT NOT NULL ,
  idPessoa INT NOT NULL ,
  CodOcorrencia INT NOT NULL ,
  CodPessoa INT NOT NULL ,
  PRIMARY KEY (idOcorrencia, idPessoa) ,
  CONSTRAINT fk_Ocorrencia_has_Pessoa_Ocorrencia1
    FOREIGN KEY (idOcorrencia )
    REFERENCES FatoOcorrencia (idOcorrencia ),
  CONSTRAINT fk_Ocorrencia_has_Pessoa_Pessoa1
    FOREIGN KEY (idPessoa )
    REFERENCES DimPessoa (idPessoa )
 );


-- -----------------------------------------------------
-- Table DimVeiculoOcorrencia
-- -----------------------------------------------------
CREATE  TABLE DimVeiculoOcorrencia (
  idOcorrencia INT NOT NULL ,
  idVeiculo INT NOT NULL ,
  CodOcorrencia INT NOT NULL ,
  CodVeiculo INT NOT NULL ,
  PRIMARY KEY (idOcorrencia, idVeiculo) ,
  CONSTRAINT fk_Ocorrencia_has_Veiculo_Ocorrencia1
    FOREIGN KEY (idOcorrencia )
    REFERENCES FatoOcorrencia (idOcorrencia ),
  CONSTRAINT fk_Ocorrencia_has_Veiculo_Veiculo1
    FOREIGN KEY (idVeiculo )
    REFERENCES DimVeiculo (idVeiculo ));